from PIL import Image
import os

"""
读取指定路径文件夹下所有图片进行压缩处理
:param folder_path : 文件夹路径
:param output_folder ： 输出路径
:param quality ：图片保存的质量（1-95）。
"""
def compress_images(folder_path, output_folder, quality=10):
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            image_path = os.path.join(folder_path, filename)
            output_path = os.path.join(output_folder, filename)

            # 打开图片并读取EXIF数据
            with Image.open(image_path) as img:
                # img.verify()  # 验证文件完整性
                img.load()  # 加载图像数据（很重要，以确保EXIF数据被加载）
                exif_data = img.info.get('exif', None)

            # 重新保存图片，压缩质量调整为quality参数值
            img.save(output_path, optimize=True, quality=quality, exif=exif_data)
            print(f"Compressed and saved {filename}")


# Example usage:
source_folder = 'E:\\work\\project\\wrj\\openrealm\\4e1ce63a-760d-4493-a239-0ba76e191691'
output_folder = 'E:\\work\\project\\wrj\\openrealm\\4e1ce63a-760d-4493-a239-0ba76e191691\\out'
compress_images(source_folder, output_folder)